package top.hymsk.ecommerce.dao.elasticsearch;

import org.springframework.stereotype.Component;
import top.hymsk.ecommerce.pojo.DTO.BaseProductDTO;
import top.hymsk.ecommerce.pojo.DTO.BuyerProductDTO;
import top.hymsk.ecommerce.pojo.DTO.ProductResponseDTO;

import java.io.IOException;

/**
 * @author 花于陌上开
 */
@Component
public interface ElasticSearchMapper {
    /**
     * 查询商品详情
     *
     * @param productId 商品id
     * @return BaseProductDTO
     */
    BuyerProductDTO searchProduct(Integer productId) throws IOException;

    /**
     * 获取默认推荐结果
     *
     * @param page 分页参数
     * @return ProductResponseDTO
     */
    ProductResponseDTO search(Integer page) throws Exception;

    /**
     * 查询
     *
     * @param keyword 查询词
     * @param page    分页参数
     * @return ProductResponseDTO
     */
    ProductResponseDTO searchByKeyword(String keyword, Integer page) throws Exception;


    /**
     * 添加商品到ES
     *
     * @param productId 商品id
     * @return 成功/失败
     */
    Boolean pushProductFromDatabase(Integer productId);

    /**
     * 删除商品
     *
     * @param productId 商品id
     * @return 成功/失败
     */
    Boolean deleteProduct(Integer productId);

}
